1. Field of the Invention
The invention relates in general to a system for processing a description of a circuit to produce a schematic diagram of the circuit wherein symbols are positioned to satisfy a set of rules specifying constraints on symbol placement.
2. Description of Related Art
A circuit designer typically generates a circuit design in the form of a netlist, a text file listing the circuit's input, output and internal signals (nets) and indicating how the nets are interrelated. The designer may initially generate a high-level netlist employing mathematical expressions to describe the relationships between signals carried on the nets, but as the circuit design progresses, the designer will produce a lower level netlist describing those relationships by describing various electronic circuit components to be included in the circuit and indicating which component terminals are connected to each net. For example, a netlist may reference a transistor or a resistor using a line of code indicating that it is an instance of a particular type of transistor and referencing the nets connected to each terminal.
A netlist is suitable for input to computer-aided design tools such as simulators, emulators and placement and routing tools, but designers often find schematic diagrams more helpful when trying to comprehend circuit designs. A schematic diagram is a graphical representation of a circuit using symbols and lines to represent circuit components and the nets that interconnect them. A designer can manually draw a schematic diagram based on a netlist, but would normally prefer to use a computer-aided schematic diagram generator that can automatically convert a netlist into a schematic diagram.
While an electronic circuit is an arrangement of low level devices such as transistors, resistors, capacitors and inductors interconnected by conductors, a circuit designer tends to view a circuit design as a set of subdesigns, wherein low level devices combine to form circuit modules having various higher level functions. For example in a digital circuit, transistors and other low level devices combine to form various logic gates and other digital devices. In an analog circuit, transistors and other devices combine to form various identifiable modules such a current mirrors, differential pairs and the like. A circuit designer will often organize a netlist description of a circuit to reflect the modularity of the design because by grouping the lines of code within the netlist describing the transistors or other device forming a particular module under a common heading, the designer can easily perceive that section of the netlist and forming a “subdesign” of the circuit design. Similarly, the circuit designer finds a transistor-level schematic diagram easiest to comprehend when it employs symbols arranged in well-known patterns to represent transistors and other devices such as capacitors and resistors forming known modules.
FIG. 1 depicts an example circuit diagram for a digital circuit 10 including a pair of inverter modules 11 and 12 and a set of NAND gate modules 13-16. When a schematic diagram generator processes a netlist to generate a schematic diagram, it could randomly place each transistor anywhere in the diagram, but that would make it very difficult for a designer to comprehend the diagram. The schematic diagram is more useful when the generator groups and orients the transistors in a way that the designer will be able to recognize them as forming particular kinds of circuit modules. For example, the arrangement of the two transistor symbols forming inverter gate 11 is well known, and an experienced designer would immediately recognize those two transistors as forming an inverter. However, if the transistor symbols were remote from one another in the schematic diagram, the designer would find it more difficult to identify them as an inverter. In addition to placing the two transistors forming inverter 11 near one another within the schematic diagram, the schematic diagram generator should also orient them in a way that the designer expects to see them. The orientation shown in FIG. 1 is the most common way to represent an inverter. FIG. 2 is another way to represent an inverter in a schematic diagram, but while a designer could deduce that FIG. 2 represents an inverter, he or she probably would not immediately recognize it as an inverter because the transistor symbols do not exhibit an expect arrangement pattern for an inverter. Thus, a typical schematic diagram generator will study a netlist to identify all recognizable module subdesigns and then generate a schematic diagram representing those subdesigns in some standard manner.
FIG. 3 is a flow chart depicting the major processing steps carried out by a typical prior art schematic diagram generator when converting a transistor-level netlist into a schematic diagram. The generator first studies the netlist to identify each recognizable subdesign (step 17) using a database of standard subdesign patterns to help it identify subdesign patterns. It then generates a schematic diagram for each subdesign (step 18) using information from the pattern database to tell it how to arrange the schematic layout for each subdesign. It then generates the top-level schematic by establishing a position and orientation within the schematic for each subdesign layout and for each transistor or other device symbol not included in one of the subdesigns.
This approach can work well for generating schematic diagrams for digital circuits because a designer tends to think of a digital circuit as a network of interacting circuit modules such as logic gates and other devices, and best understands a schematic diagram organized along these lines. On the other hand, even though an analog circuit will include identifiable modules such as differential pairs, current mirrors, and the like, an analog circuit designer also tends to view an analog circuit in ways other than on a module-by-module basis. For example, an analog circuit designer is interested in determining how current flows though transistors and other devices connected in series between power and ground, and how data signals flow from transistor-to-transistor. Thus while organizing a schematic diagram for an analog circuit along modular lines, as an arrangement of subdesigns, can help a designer understand an analog circuit schematic diagram, a computer-aided schematic diagram generator should also take other considerations into account when generating a schematic diagram for an analog circuit.